package com.cwl.arithmetic.graph.rectangle;

/**
 * @program: data-structure
 * @description: 打印菱形算法
 * @author: ChenWenLong
 * @create: 2019-09-10 14:38
 **/
public class Rhombus {

    public static void main(String[] args) {
        //printHollowRhombus(10);
        printSolidRhombus(10);
    }

    /**
     * 功能描述:
     * 〈打印指定行数line的空心菱形〉
     *
     * @params : [line]
     * @return : void
     * @author : cwl
     * @date : 2019/9/10 15:12
     */
    public static void printHollowRhombus(int line) {
        if (line % 2 == 0) {
            line++;// 计算菱形大小
        }
        for (int i = 0; i < line / 2 + 1; i++) {
            for (int j = line / 2 + 1; j > i + 1; j--) {
                System.out.print("  ");// 输出左上角位置的空白
            }
            for (int j = 0; j < 2 * i + 1; j++) {
                if (j == 0 || j == 2 * i) {
                    System.out.print("* ");// 输出菱形上半部边缘
                } else {
                    System.out.print("  ");// 输出菱形上半部空心
                }
            }
            System.out.println("");		//换行
        }
        for (int i = line / 2 + 1; i < line; i++) {
            for (int j = 0; j < i - line / 2; j++) {
                System.out.print("  ");// 输出菱形左下角空白
            }
            for (int j = 0; j < 2 * line - 1 - 2 * i; j++) {
                if (j == 0 || j == 2 * (line - i - 1)) {
                    System.out.print("* ");// 输出菱形下半部边缘
                } else {
                    System.out.print("  ");// 输出菱形下半部空心
                }
            }
            System.out.println("");		//换行
        }
    }
    
    /**
     * 功能描述: 
     * 〈打印指定行数line的实心菱形〉
     *
     * @params : [line]
     * @return : void
     * @author : cwl
     * @date : 2019/9/10 15:14
     */
    public static void printSolidRhombus(int line){
        for(int i = 0;i < line;i++){
            for(int k = 0;k < line-1 - i;k++){
                System.out.print(" ");
            }
            for(int j = 0;j < i + 1;j++){
                System.out.print("* ");
            }
            System.out.println();
        }
        //下半部分
        for(int i = 0;i < line-1;i++){
            for(int k = 0;k < i + 1;k++){
                System.out.print(" ");
            }
            for(int j = 0;j < line-1 - i;j++){
                System.out.print("* ");
            }
            System.out.println();
        }
    }
}
